package com.cn.wanxi.servlet;

import com.cn.wanxi.model.CompanyModel;
import com.cn.wanxi.model.NavModel;
import com.cn.wanxi.model.NewsModel;
import com.cn.wanxi.model.TitleModel;
import com.cn.wanxi.service.CompanyService;
import com.cn.wanxi.service.NavService;
import com.cn.wanxi.service.NewsService;
import com.cn.wanxi.service.TitleService;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;

@WebServlet("/home")
public class HomeServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        TitleService titleService = new TitleService();
        TitleModel titleModel = titleService.getTitleModel();
        req.setAttribute("titleModel", titleModel);
        CompanyService companyService = new CompanyService();
//        得到公司信息
        CompanyModel companyModel = companyService.getCompanyModel();
        req.setAttribute("companyModel", companyModel);//将数据存放在四大作用域里面的request

        NavService navService = new NavService();
//        NavModel navModel=navService.getNavModel();
        List<NavModel> navModelList = navService.getNavModelList();
        req.setAttribute("navModelList", navModelList);//思考，nav到底属于什么类型？


        NewsService newsService = new NewsService();
        List<NewsModel> newsModelList = newsService.getNewsModelList();
        req.setAttribute("newsModelList", newsModelList);
        req.getRequestDispatcher("/jsp/home.jsp").forward(req, resp);//页面转发，转发数据
    }
    /**
     * 将页面的标题提取出来：
     * 1.新建servlet层  之和页面相关
     *  1）写注解 前台访问后台的地址 home
     *  2）返回那个页面 req.getRequestDispatcher("/jsp/home.jsp").forward(req, resp)
     *  3）同时需要将数据传递给前端
     *      这里需要的数据是一个对象titleModel，而不是单独的一个属性，因为我们需要一次性传递多个数据
     *      req.setAttribute("titleModel", titleModel);
     *      setAttribute（key，value） key代表前端要访问的地址 ，value就是后端传递给前端的值
     *  4）value值应该从服务层来取得
     *      TitleService titleService = new TitleService();//对服务层进行实例化
     *      TitleModel titleModel = titleService.getTitleModel();调用服务层的方法
     * 2 service服务逻辑层
     *      1）主要封装数据层的数据
     *      TitleDao titleDao = new TitleDao();主要目的就是为了得到数据
     *      2）封装
     *      TitleModel titleModel = new TitleModel();
     *      titleModel.setNewsTitle(titleDao.getNewsTitle());
     *      titleModel.setProducTitle(titleDao.getProducTitle());
     *      3)返回对象
     * 3.dao 数据访问层
     *      主要目的就是数据
     */
    /**
     * 1.数组，定义方式
     * 2.集合：
     * 3.jstl 标签和el表达式     c:forEach   c:if
     * 4.类的加载顺序
     *
     */
}
